package poo.abstracto;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public abstract class Figura {
    
    
    public static void main(String[] args) {
//        Figura f = new Figura();
//        f.dibujar();
        Cuadrado c = new Cuadrado(12);
        c.dibujar();
        Circulo ci = new Circulo(22);
        ci.dibujar();

        pintar(c);
        pintar(ci);
        
        Figura[] misFiguras = new Figura[3];
        misFiguras[0]=c;
        misFiguras[1]=ci;
        pintarArray(misFiguras);
        
        List lasFiguras = new ArrayList();
        lasFiguras.add(c);
        lasFiguras.add(ci);
        pintarLista(lasFiguras);
        
        List<Figura> lasFiguras2 = new ArrayList<Figura>();
        lasFiguras2.add(c);
        lasFiguras2.add(ci); 
        //lasFiguras2.add(new Date());
        pintarListaFiguras(lasFiguras2);
        
        System.out.println(lasFiguras2);
    }

    private static void pintar(Figura fig) {
        fig.dibujar();        
    }

    private static void pintarArray(Figura[] misFiguras) {
        for (int i = 0; i < misFiguras.length; i++) {
            if ( misFiguras[i] != null ){
                misFiguras[i].dibujar();                            
            }            
        }
    }

    private static void pintarLista(List lasFiguras) {
        for (int i = 0; i < lasFiguras.size(); i++) {
            ((Figura)lasFiguras.get(i)).dibujar();            
        }
    }

    private static void pintarListaFiguras(List<Figura> lasFiguras2) {
        for (Figura figura : lasFiguras2) {
            figura.dibujar();
        }
        for (int i = 0; i < lasFiguras2.size(); i++) {
            lasFiguras2.get(i).dibujar();            
        }        
    }

    public abstract void dibujar();
}
